HTMLify
app.js
Views: 12 | Author: huxn-webdev
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | // Create Template Variables const INTERVAL_MS = 1000 / 60; let timerID; let lastTimerStartTime = 0; let millisElapsedBeforeLastStart = 0; // Get Our Data From The DOM const timer = document.getElementById("timer"); const startButton = document.getElementById("start-button"); const stopButton = document.getElementById("stop-button"); const resetButton = document.getElementById("reset-button"); // USE EVENTS startButton.addEventListener("click", startTimer); stopButton.addEventListener("click", stopTimer); resetButton.addEventListener("click", resetTimers); // ---- CREATING A FUNCTIONS ---- // 1. startTimer function startTimer() { startButton.disabled = true; stopButton.disabled = false; resetButton.disabled = true; lastTimerStartTime = Date.now(); timerID = setInterval(updateTimer, INTERVAL_MS); } // 2. stopTimer function stopTimer() { startButton.disabled = false; stopButton.disabled = true; resetButton.disabled = false; millisElapsedBeforeLastStart += Date.now() - lastTimerStartTime; clearInterval(timerID); } // 3. resetTimer function resetTimers() { resetButton.disabled = true; timer.textContent = "00:00:00"; millisElapsedBeforeLastStart = 0; } // 4. updateTimer function updateTimer() { const milllisElapsed = Date.now() - lastTimerStartTime + millisElapsedBeforeLastStart; const secondsElapsed = milllisElapsed / 1000; const minutesElapsed = secondsElapsed / 60; const millisText = formateNumber(milllisElapsed % 1000, 3); const secondsText = formateNumber(Math.floor(secondsElapsed) % 60, 2); const minutesText = formateNumber(Math.floor(minutesElapsed), 2); timer.textContent = `${minutesText}:${secondsText}:${millisText}`; } // 5. formatNumber function formateNumber(number, desiredLength) { const stringNumber = String(number); if (stringNumber.length > desiredLength) { return stringNumber.slice(0, desiredLength); } return stringNumber.padStart(desiredLength, "0"); } |